package com.starmark.sys.org.atomic.service;


import com.starmark.core.framework.base.BaseService;
import com.starmark.sys.org.api.dto.OrgElementDto;
import com.starmark.sys.org.atomic.entity.SysOrgDept;
import com.starmark.sys.org.atomic.vo.SysOrgDeptVo;

import java.util.List;
import java.util.Map;


public interface ISysOrgDeptService extends BaseService<SysOrgDept> {


    /**
     * 插入一条记录（选择字段，策略插入）
     *
     * @param sysOrgDeptVo 实体对象
     */
    String  saveDept(SysOrgDeptVo sysOrgDeptVo);


    /**
     * 根据 ID 选择修改
     *
     * @param sysOrgDeptVo 实体对象
     */
    String updateDept(SysOrgDeptVo sysOrgDeptVo);

    /**
     * 通过父节点，查找下级部门信息
     *
     * @param id 父ID 为空时，查找根部门信息
     * @return 人员信息集合
     */
    List<OrgElementDto> getOrgTreeById(String id);


    /**
     * 获取部门的ID及名称映射
     * @param ids 用户ID集合
     * @return 门的ID及名称映射
     */
    Map<String,String> findDeptMapByIds(List<String> ids);

    /**
     * 更新子部门下的层级ID
     * @param oldLevelId 旧层级ID
     * @param newLevelId 新层级ID
     * @param updateTime 更新时间，
     * @param updateBy 更新人员
     */
    void updateChildDeptLevel(String oldLevelId,String newLevelId,long updateTime,String updateBy);
}
